package net.lovesrc.support.service.picprocess;

import net.coobird.thumbnailator.geometry.Positions;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * @author gelic
 * Created in 16:03 2018/10/27
 * @since
 */
public interface PicService {

    double DEFUALT_SCALT = 1.0;
    float DEFUALT_QUALITY = 0.8f;


    /**
     * 压缩图片
     * @param is 待压缩的图片流
     * @param os 压缩后的图片流
     * @throws IOException
     */
    void Thum(InputStream is, OutputStream os) throws IOException;

    /**
     * 压缩图片
     * @param is 待压缩的图片流
     * @param scale 压缩后的缩放,等比
     * @param quality 压缩后的质量
     * @param os 压缩后的图片流
     * @throws IOException
     */
    void Thum(InputStream is, double scale, float quality, OutputStream os) throws IOException;

    /**
     * 压缩图片
     * @param inputFile 待压缩的文件
     * @param scale 压缩后的缩放,等比
     * @param quality 压缩后的质量
     * @param outputFile 压缩后的文件
     * @throws IOException
     */
    void Thum(File inputFile, double scale, float quality, File outputFile) throws IOException;


    /**
     * 水印服务
     * @param is 待水印的图片流
     * @param outputFormat 水印后图片格式
     * @param watermarkConfig 水印配置
     * @param os 水印后的图片流
     * @throws IOException
     */
    void watermark(InputStream is, String outputFormat, WatermarkConfig watermarkConfig, OutputStream os) throws IOException;

    /**
     * 水印服务
     * @param inputFile 待水印的图片文件
     * @param content 水印内容
     * @param outputFile 水印后的图片文件
     * @throws IOException
     */
    void watermark(File inputFile, String content, File outputFile) throws IOException;

    /**
     * 水印服务
     * @param inputFile 待水印的图片文件
     * @param watermarkConfig 水印配置
     * @param outputFile 水印后的图片文件
     * @throws IOException
     */
    void watermark(File inputFile, WatermarkConfig watermarkConfig, File outputFile) throws IOException;



}
